#include"process.h"
#include<string.h>
#include<unistd.h>
#define SIZE 101 
#define STYLE '#'
//v2:根据进度进行动态刷新一次我们的进度条
void FlushProcess(const char*tips,double total,double current)
{
  const char*lable="|/-\\";
  int len=strlen(lable);
  static int index=0;//只要我们调用这整个函数的话，那么我们这个光标就能进行转动的操作了
  char buffer[SIZE];
  memset(buffer,0,sizeof(buffer));//将我们的buffer初始化为0
  
  //int num =(int)(current*100/total);//只要满足到了1个#的话那么我们就进行数据的刷新
  double rate = current*100.0/total;
  int num=(int)rate;//我们的num直接通过我们的比率进行获得
  int i=0;
  for(;i<num;i++)
  {
    buffer[i]=STYLE;
  }

  printf("%s...[%-100s][%.1lf%%][%c]\r",tips,buffer,rate,lable[index++]);//100s就是预留出100个位置
  fflush(stdout);//强制进行刷新操作
  index%=len;//保证我们的index不会发现越界的现象
  if(num==100)
  {
    printf("\n");
  }
}
//即使我们的进度条不进行更新操作，我们依旧在进行下载的进度中，光标是一直在旋转的


void process()
{
  //v1版本展示进度条的基本功能
  int rate=0;
  //定义一个缓冲区
  char buffer[SIZE];
  memset(buffer,0,sizeof(buffer));//将我们的buffer初始化为0
  const char*lable="|/-\\";
  int len =strlen(lable);
  
  while(rate<=100)
  {
    printf("[%-100s][%d%%][%c]\r",buffer,rate,lable[rate%len]);//每次从我们的当前行开始输出,rate%len就是最后显示的下标只可能是 0 1 2 3这四个数，可以使我们的四个字符一直进行变化的操作
    fflush(stdout);//将我们缓冲区的消息进行刷新操作
    buffer[rate]=STYLE;
    rate++;
    usleep(50000);
  }
  printf("\n");//让我们左侧的命令行新起一行
}
